#include "FreeRTOS_start.h"

TaskHandle_t FreeRTOS_handler;
// 申明消息队列
extern QueueHandle_t configQueue;


// 任务启动函数
void start_task(void *param)
{
    // 进入临界区
    taskENTER_CRITICAL();

    // 创建消息队列
    printf("22222222");
    configQueue = xQueueCreate(5, sizeof(char*));
    printf("33333333333");
    // // 初始化任务……
    heart_task_init();
    gather_task_init();
    execute_task_init();
    bluetooth_task_init();
    config_task_init();

    // // 创建任务……
    heart_task_create();
    gather_task_create();
    execute_task_create();
    bluetooth_task_create();
    config_task_create();

    // // 删除自己
    vTaskDelete(NULL);
    
    // 退出临界区
    taskEXIT_CRITICAL();
}

// 程序启动函数
void FreeRTOSStart()
{
    printf("111111111");
    // 创建任务
    BaseType_t res = xTaskCreate(start_task, "start_task", 128, NULL, 2, &FreeRTOS_handler);
    if (res == pdPASS)
    {
        printf("start_task create success!\r\n");
    }

    // 开启任务调度
    vTaskStartScheduler();
}